前面做了一堆前置作業,這邊先看一下目前的架構如下
crypto_app是之前startapp生出來的應用程式
CryptoBot則是我們的主程式
接著要把這邊ngrok建立出的網址複製貼到Line developer 的webhook
按下Verify就可以看到sucess那就沒問題了
只要到setting這邊把下面這幾個地方修改一下就可以了
如果忘記這邊要放什麼請到Day20看一下
LINE_CHANNEL_ACCESS_TOKEN = '請放你的token'
LINE_CHANNEL_SECRET = '請放你的secret'
LANGUAGE_CODE = 'zh-hant'
TIME_ZONE = 'Asia/Taipei'
這邊的大小寫可能要稍微注意一下!!!
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'crypto_app.apps.CryptoAppConfig'
]
DEBUG = True
ALLOWED_HOSTS = ['*']
ALLOWED_HOSTS若是有固定的Host或使用ngrok等進行demo測試時,再做更改就可以了
在url.py檔案中,設定的是當外部連接進入網站時,因為前面我們用ngrok 是用port 8000開的,所以預設的是當進入127.0.0.1:8000/admin的時候會進入Django內建後台的設定,我們等等還要去建立superuser。
from django.contrib import admin
from django.urls import path
from crypto_app import views
urlpatterns = [
path('admin/', admin.site.urls),
path('callback', views.callback)
]
這邊我們可以先用這段程式來測試看我們是否有建立成功,這邊寫的功能是當使用者輸入訊息時會觸發,機器人會自動回應使用者輸入的訊息。
from django.shortcuts import render
from django.http import HttpResponse, HttpResponseBadRequest, HttpResponseForbidden
from django.views.decorators.csrf import csrf_exempt
# from django.conf import settings
from CryptoBot import settings
from linebot import LineBotApi, WebhookParser
from linebot.exceptions import InvalidSignatureError, LineBotApiError
from linebot.models import MessageEvent, TextSendMessage
line_bot_api = LineBotApi(settings.LINE_CHANNEL_ACCESS_TOKEN)
parser = WebhookParser(settings.LINE_CHANNEL_SECRET)
@csrf_exempt
def callback(request):
if request.method == 'POST':
signature = request.META['HTTP_X_LINE_SIGNATURE']
body = request.body.decode('utf-8')
try:
events = parser.parse(body, signature) # 傳入的事件
except InvalidSignatureError:
return HttpResponseForbidden()
except LineBotApiError:
return HttpResponseBadRequest()
for event in events:
if isinstance(event, MessageEvent): # 如果有訊息事件
line_bot_api.reply_message( # 回復傳入的訊息文字
event.reply_token,
TextSendMessage(text=event.message.text)
)
return HttpResponse()
else:
return HttpResponseBadRequest()
完成以上設定後,一定要進行資料庫遷移的動作,還有往後如果有更動到一些東西也要來做這件事情。
python manage.py makemigrations
python manage.py migrate
在進行初始化後,再來要建立超級使用者,讓我們能夠登入到Django後台。
python manage.py createsuperuser
建立超級使用者之後我們要先開server
python manage.py runserver
接著就可以到這個地方登入剛剛註冊的帳號
http://127.0.0.1:8000/admin/
當你看到這樣的畫面就成功了